import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class day_06_IO_Test_01 {
    public static void main(String[] args) throws IOException {
        //拷贝文件夹，考虑子文件夹

        //创建对象表示数据源
        File src = new File("LeetCode");

        //创建对象表示目的地
        File dest = new File("Copy LeetCode");

        //调用方法拷贝
        copyDir(src, dest);
    }

    public static void copyDir(File src, File dest) throws IOException {
        //如果目的文件夹不存在则创建目录
        dest.mkdirs();
        //获取目标文件列表
        File[] files = src.listFiles();

        for (File f : files) {
            //如果是文件，拷贝文件
            if (f.isFile()) {
                //拷贝后的文件名
                String copyFileName = "Copy " + f.getName();
                //创建文件读取对象
                FileInputStream fileInputStream = new FileInputStream(f);
                //创建文件写入对象
                FileOutputStream fileOutputStream = new FileOutputStream(new File(dest,copyFileName));
                
                //开始拷贝
                byte[] bytes = new byte[1024];
                int len;
                while ((len = fileInputStream.read(bytes)) != -1) {
                    fileOutputStream.write(bytes, 0, len);
                }
                
                //关闭连接
                fileOutputStream.close();
                fileInputStream.close();
            }
            //如果是文件夹，递归
            else {
                copyDir(f, new File(dest,f.getName()));
            }
            
        }
        
    }
}
